//
// Created by 谢哲 on 2021/5/15.
//

#include <iostream>
#include <vector>
#include <cmath>
#include <algorithm>
using namespace std;

int main() {
    int L, N, K;
    cin >> L >> N >> K;

    vector<int> vdata(N);
    for (auto &p: vdata) cin >> p;

    int l = 0, r = L;
    int right_ans = -1;
    while (l<=r) {
        int mid = (l + r) >> 1;
        int cnt = 0;
        for (int i=1;i<N;++i) {
            int gap = vdata[i] - vdata[i-1];
            cnt += int(ceil(double(gap) / double(mid))) - 1;
        }
        if (cnt <= K) {
            right_ans = mid;
            r = mid - 1;
        }
        else {
            l = mid + 1;
        }
    }

    cout << right_ans;

    return 0;
}
